allocate books algorithm